<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::search::FlannSearch&lt; PointT, FlannDistance &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1search_1_1_flann_search.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">类</a> &#124;
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classpcl_1_1search_1_1_flann_search-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::search::FlannSearch&lt; PointT, FlannDistance &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p><b><a class="el" href="classpcl_1_1search_1_1_flann_search.html" title="search::FlannSearch is a generic FLANN wrapper class for the new search interface....">search::FlannSearch</a></b> is a generic FLANN wrapper class for the new search interface. It is able to wrap any FLANN index type, e.g. the kd tree as well as indices for high-dimensional searches and intended as a more powerful and cleaner successor to KdTreeFlann.  
 <a href="classpcl_1_1search_1_1_flann_search.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="flann__search_8h_source.html">flann_search.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::search::FlannSearch&lt; PointT, FlannDistance &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1search_1_1_flann_search.png" usemap="#pcl::search::FlannSearch_3C_20PointT_2C_20FlannDistance_20_3E_map" alt=""/>
  <map id="pcl::search::FlannSearch_3C_20PointT_2C_20FlannDistance_20_3E_map" name="pcl::search::FlannSearch_3C_20PointT_2C_20FlannDistance_20_3E_map">
<area href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this." alt="pcl::search::Search&lt; PointT &gt;" shape="rect" coords="0,0,302,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search_1_1_flann_index_creator.html">FlannIndexCreator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class that creates a FLANN index from a given FLANN matrix. To use a FLANN index type with <a class="el" href="classpcl_1_1search_1_1_flann_search.html" title="search::FlannSearch is a generic FLANN wrapper class for the new search interface....">FlannSearch</a>, implement this interface and pass an object of the new type to the <a class="el" href="classpcl_1_1search_1_1_flann_search.html" title="search::FlannSearch is a generic FLANN wrapper class for the new search interface....">FlannSearch</a> constructor. See the implementation of <a class="el" href="classpcl_1_1search_1_1_flann_search_1_1_kd_tree_index_creator.html" title="Creates a FLANN KdTreeSingleIndex from the given input data.">KdTreeIndexCreator</a> for an example.  <a href="classpcl_1_1search_1_1_flann_search_1_1_flann_index_creator.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search_1_1_kd_tree_index_creator.html">KdTreeIndexCreator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a FLANN KdTreeSingleIndex from the given input data.  <a href="classpcl_1_1search_1_1_flann_search_1_1_kd_tree_index_creator.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search_1_1_kd_tree_multi_index_creator.html">KdTreeMultiIndexCreator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a FLANN KdTreeIndex of multiple randomized trees from the given input data, suitable for feature matching. Note that in this case, it is often more efficient to use the <a class="el" href="structflann_1_1_l2.html">flann::L2</a> distance functor.  <a href="classpcl_1_1search_1_1_flann_search_1_1_kd_tree_multi_index_creator.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search_1_1_k_means_index_creator.html">KMeansIndexCreator</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a FLANN KdTreeSingleIndex from the given input data.  <a href="classpcl_1_1search_1_1_flann_search_1_1_k_means_index_creator.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a157089f7df9b6de53c75baf230206974"><td class="memItemLeft" align="right" valign="top"><a id="a157089f7df9b6de53c75baf230206974"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1search_1_1_flann_search.html">FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a157089f7df9b6de53c75baf230206974"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cb3da2d7f0b07c8e3327c25b8afa6e2"><td class="memItemLeft" align="right" valign="top"><a id="a6cb3da2d7f0b07c8e3327c25b8afa6e2"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1search_1_1_flann_search.html">FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a6cb3da2d7f0b07c8e3327c25b8afa6e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a000bd976342f2fcec1fba1faae8840dc"><td class="memItemLeft" align="right" valign="top"><a id="a000bd976342f2fcec1fba1faae8840dc"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a000bd976342f2fcec1fba1faae8840dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61cbba8bfe54f241466bf72452f98cb5"><td class="memItemLeft" align="right" valign="top"><a id="a61cbba8bfe54f241466bf72452f98cb5"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:a61cbba8bfe54f241466bf72452f98cb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa01fc82ce096faefc13311ac0a22940d"><td class="memItemLeft" align="right" valign="top"><a id="aa01fc82ce096faefc13311ac0a22940d"></a>
typedef boost::shared_ptr&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesPtr</b></td></tr>
<tr class="separator:aa01fc82ce096faefc13311ac0a22940d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2f4eabef916ff0a2e40f6a09bc3ad7d"><td class="memItemLeft" align="right" valign="top"><a id="ad2f4eabef916ff0a2e40f6a09bc3ad7d"></a>
typedef boost::shared_ptr&lt; const std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesConstPtr</b></td></tr>
<tr class="separator:ad2f4eabef916ff0a2e40f6a09bc3ad7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81a9805967f9c3d83c59bd9336987bef"><td class="memItemLeft" align="right" valign="top"><a id="a81a9805967f9c3d83c59bd9336987bef"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classflann_1_1_matrix.html">flann::Matrix</a>&lt; float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MatrixPtr</b></td></tr>
<tr class="separator:a81a9805967f9c3d83c59bd9336987bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9881fc860c78aba794b77f613ea44b9e"><td class="memItemLeft" align="right" valign="top"><a id="a9881fc860c78aba794b77f613ea44b9e"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classflann_1_1_matrix.html">flann::Matrix</a>&lt; float &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MatrixConstPtr</b></td></tr>
<tr class="separator:a9881fc860c78aba794b77f613ea44b9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a397450414ca3c90bffaf4f46f60b8b45"><td class="memItemLeft" align="right" valign="top"><a id="a397450414ca3c90bffaf4f46f60b8b45"></a>
typedef <a class="el" href="classflann_1_1_n_n_index.html">flann::NNIndex</a>&lt; FlannDistance &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Index</b></td></tr>
<tr class="separator:a397450414ca3c90bffaf4f46f60b8b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca3e94e6aac4318b68491a53df42f8b6"><td class="memItemLeft" align="right" valign="top"><a id="aca3e94e6aac4318b68491a53df42f8b6"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classflann_1_1_n_n_index.html">flann::NNIndex</a>&lt; FlannDistance &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndexPtr</b></td></tr>
<tr class="separator:aca3e94e6aac4318b68491a53df42f8b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d12655d8f186faff5a9f51934cd4cab"><td class="memItemLeft" align="right" valign="top"><a id="a6d12655d8f186faff5a9f51934cd4cab"></a>
typedef <a class="el" href="classpcl_1_1_point_representation.html">pcl::PointRepresentation</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointRepresentation</b></td></tr>
<tr class="separator:a6d12655d8f186faff5a9f51934cd4cab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa84fec67117e89deeef43af5edb00ee9"><td class="memItemLeft" align="right" valign="top"><a id="aa84fec67117e89deeef43af5edb00ee9"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_point_representation.html">PointRepresentation</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointRepresentationPtr</b></td></tr>
<tr class="separator:aa84fec67117e89deeef43af5edb00ee9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5e7b87a70e4147395c8059eb3b9467e"><td class="memItemLeft" align="right" valign="top"><a id="af5e7b87a70e4147395c8059eb3b9467e"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_point_representation.html">PointRepresentation</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointRepresentationConstPtr</b></td></tr>
<tr class="separator:af5e7b87a70e4147395c8059eb3b9467e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9700c54cea1dba094eca403ab4244c24"><td class="memItemLeft" align="right" valign="top"><a id="a9700c54cea1dba094eca403ab4244c24"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1search_1_1_flann_search_1_1_flann_index_creator.html">FlannIndexCreator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>FlannIndexCreatorPtr</b></td></tr>
<tr class="separator:a9700c54cea1dba094eca403ab4244c24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a24c22de8c0cfcedbbab42e3c25aa41f7 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a24c22de8c0cfcedbbab42e3c25aa41f7"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a24c22de8c0cfcedbbab42e3c25aa41f7 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a922d03abf030ab09d8dd4af8a5828065 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a922d03abf030ab09d8dd4af8a5828065"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a922d03abf030ab09d8dd4af8a5828065 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af089775487d2db25133d9e06152679ee inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="af089775487d2db25133d9e06152679ee"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:af089775487d2db25133d9e06152679ee inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0bda42e747837e2398814c20eb6d517 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="ae0bda42e747837e2398814c20eb6d517"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:ae0bda42e747837e2398814c20eb6d517 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a5b59a5c47651341b662252dcb8550c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a2a5b59a5c47651341b662252dcb8550c"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a2a5b59a5c47651341b662252dcb8550c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b72144b949332536b816ed7cdcafda4 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a3b72144b949332536b816ed7cdcafda4"></a>
typedef boost::shared_ptr&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesPtr</b></td></tr>
<tr class="separator:a3b72144b949332536b816ed7cdcafda4 inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95f5e7d01e595fb090d2d7841a1ea70c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a95f5e7d01e595fb090d2d7841a1ea70c"></a>
typedef boost::shared_ptr&lt; const std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IndicesConstPtr</b></td></tr>
<tr class="separator:a95f5e7d01e595fb090d2d7841a1ea70c inherit pub_types_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a70ad9ca6f9bb0c6a8e765292db4aa0be"><td class="memItemLeft" align="right" valign="top"><a id="a70ad9ca6f9bb0c6a8e765292db4aa0be"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>FlannSearch</b> (bool sorted=true, FlannIndexCreatorPtr creator=FlannIndexCreatorPtr(new <a class="el" href="classpcl_1_1search_1_1_flann_search_1_1_kd_tree_index_creator.html">KdTreeIndexCreator</a>()))</td></tr>
<tr class="separator:a70ad9ca6f9bb0c6a8e765292db4aa0be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd1a1ecc0408c7913c3db9f12a5d3adc"><td class="memItemLeft" align="right" valign="top"><a id="afd1a1ecc0408c7913c3db9f12a5d3adc"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#afd1a1ecc0408c7913c3db9f12a5d3adc">~FlannSearch</a> ()</td></tr>
<tr class="memdesc:afd1a1ecc0408c7913c3db9f12a5d3adc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor for <a class="el" href="classpcl_1_1search_1_1_flann_search.html" title="search::FlannSearch is a generic FLANN wrapper class for the new search interface....">FlannSearch</a>. <br /></td></tr>
<tr class="separator:afd1a1ecc0408c7913c3db9f12a5d3adc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18af4bfbf20e87b3ffadda8f7a80658d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a18af4bfbf20e87b3ffadda8f7a80658d">setEpsilon</a> (double eps)</td></tr>
<tr class="memdesc:a18af4bfbf20e87b3ffadda8f7a80658d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the search epsilon precision (error bound) for nearest neighbors searches.  <a href="classpcl_1_1search_1_1_flann_search.html#a18af4bfbf20e87b3ffadda8f7a80658d">更多...</a><br /></td></tr>
<tr class="separator:a18af4bfbf20e87b3ffadda8f7a80658d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d705bda6142a3693044e786579ce8e3"><td class="memItemLeft" align="right" valign="top"><a id="a6d705bda6142a3693044e786579ce8e3"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a6d705bda6142a3693044e786579ce8e3">getEpsilon</a> ()</td></tr>
<tr class="memdesc:a6d705bda6142a3693044e786579ce8e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the search epsilon precision (error bound) for nearest neighbors searches. <br /></td></tr>
<tr class="separator:a6d705bda6142a3693044e786579ce8e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7acb950fe0924c9625507336a5e803a9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a7acb950fe0924c9625507336a5e803a9">setChecks</a> (int checks)</td></tr>
<tr class="memdesc:a7acb950fe0924c9625507336a5e803a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the number of checks to perform during approximate searches in multiple randomized trees.  <a href="classpcl_1_1search_1_1_flann_search.html#a7acb950fe0924c9625507336a5e803a9">更多...</a><br /></td></tr>
<tr class="separator:a7acb950fe0924c9625507336a5e803a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf938d819d7546c08f2f0ee086b6e324"><td class="memItemLeft" align="right" valign="top"><a id="adf938d819d7546c08f2f0ee086b6e324"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#adf938d819d7546c08f2f0ee086b6e324">getChecks</a> ()</td></tr>
<tr class="memdesc:adf938d819d7546c08f2f0ee086b6e324"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of checks to perform during approximate searches in multiple randomized trees. <br /></td></tr>
<tr class="separator:adf938d819d7546c08f2f0ee086b6e324"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace2468a9ef6db97f6b8d3c76d5ae9366"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#ace2468a9ef6db97f6b8d3c76d5ae9366">setInputCloud</a> (const PointCloudConstPtr &amp;cloud, const IndicesConstPtr &amp;indices=IndicesConstPtr())</td></tr>
<tr class="memdesc:ace2468a9ef6db97f6b8d3c76d5ae9366"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset.  <a href="classpcl_1_1search_1_1_flann_search.html#ace2468a9ef6db97f6b8d3c76d5ae9366">更多...</a><br /></td></tr>
<tr class="separator:ace2468a9ef6db97f6b8d3c76d5ae9366"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9060d79b5308f121289b0787ac44a990"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a9060d79b5308f121289b0787ac44a990">nearestKSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a9060d79b5308f121289b0787ac44a990"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point.  <a href="classpcl_1_1search_1_1_flann_search.html#a9060d79b5308f121289b0787ac44a990">更多...</a><br /></td></tr>
<tr class="separator:a9060d79b5308f121289b0787ac44a990"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0259b475dbe230726643f3e99885b540"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a0259b475dbe230726643f3e99885b540">nearestKSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, const std::vector&lt; int &gt; &amp;indices, int k, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a0259b475dbe230726643f3e99885b540"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point.  <a href="classpcl_1_1search_1_1_flann_search.html#a0259b475dbe230726643f3e99885b540">更多...</a><br /></td></tr>
<tr class="separator:a0259b475dbe230726643f3e99885b540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a376242567b2cd559d4828715ea600d08"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a376242567b2cd559d4828715ea600d08">radiusSearch</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;point, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a376242567b2cd559d4828715ea600d08"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius.  <a href="classpcl_1_1search_1_1_flann_search.html#a376242567b2cd559d4828715ea600d08">更多...</a><br /></td></tr>
<tr class="separator:a376242567b2cd559d4828715ea600d08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a003f3a1b8a3f24ed4ba5f4f68a8f2c14"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a003f3a1b8a3f24ed4ba5f4f68a8f2c14">radiusSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, const std::vector&lt; int &gt; &amp;indices, double radius, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a003f3a1b8a3f24ed4ba5f4f68a8f2c14"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point.  <a href="classpcl_1_1search_1_1_flann_search.html#a003f3a1b8a3f24ed4ba5f4f68a8f2c14">更多...</a><br /></td></tr>
<tr class="separator:a003f3a1b8a3f24ed4ba5f4f68a8f2c14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae70a35ca569955432de38d278a27fd1c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#ae70a35ca569955432de38d278a27fd1c">setPointRepresentation</a> (const PointRepresentationConstPtr &amp;point_representation)</td></tr>
<tr class="memdesc:ae70a35ca569955432de38d278a27fd1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the point representation to use to convert points into k-D vectors.  <a href="classpcl_1_1search_1_1_flann_search.html#ae70a35ca569955432de38d278a27fd1c">更多...</a><br /></td></tr>
<tr class="separator:ae70a35ca569955432de38d278a27fd1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed584d616d25c64e9c373141570ec6a4"><td class="memItemLeft" align="right" valign="top"><a id="aed584d616d25c64e9c373141570ec6a4"></a>
PointRepresentationConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#aed584d616d25c64e9c373141570ec6a4">getPointRepresentation</a> ()</td></tr>
<tr class="memdesc:aed584d616d25c64e9c373141570ec6a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the point representation used when converting points into k-D vectors. <br /></td></tr>
<tr class="separator:aed584d616d25c64e9c373141570ec6a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a77f437ecf7fa36987632db9c2b450441 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a77f437ecf7fa36987632db9c2b450441">Search</a> (const std::string &amp;name=&quot;&quot;, bool sorted=false)</td></tr>
<tr class="separator:a77f437ecf7fa36987632db9c2b450441 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25fbcca7b8f88fdf464f8c9af576626c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a25fbcca7b8f88fdf464f8c9af576626c">~Search</a> ()</td></tr>
<tr class="separator:a25fbcca7b8f88fdf464f8c9af576626c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58f09ccdd4f9296a3462f902f78ee544 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a58f09ccdd4f9296a3462f902f78ee544"></a>
virtual const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a58f09ccdd4f9296a3462f902f78ee544">getName</a> () const</td></tr>
<tr class="memdesc:a58f09ccdd4f9296a3462f902f78ee544 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the search method name <br /></td></tr>
<tr class="separator:a58f09ccdd4f9296a3462f902f78ee544 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5e9ca2efdb199e64d05c399ea4a4412 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#af5e9ca2efdb199e64d05c399ea4a4412">setSortedResults</a> (bool sorted)</td></tr>
<tr class="memdesc:af5e9ca2efdb199e64d05c399ea4a4412 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">sets whether the results should be sorted (ascending in the distance) or not  <a href="classpcl_1_1search_1_1_search.html#af5e9ca2efdb199e64d05c399ea4a4412">更多...</a><br /></td></tr>
<tr class="separator:af5e9ca2efdb199e64d05c399ea4a4412 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ab66bf51224fca916cc193e953d39d8 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a0ab66bf51224fca916cc193e953d39d8"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a0ab66bf51224fca916cc193e953d39d8">getSortedResults</a> ()</td></tr>
<tr class="memdesc:a0ab66bf51224fca916cc193e953d39d8 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets whether the results should be sorted (ascending in the distance) or not Otherwise the results may be returned in any order. <br /></td></tr>
<tr class="separator:a0ab66bf51224fca916cc193e953d39d8 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4a83e895b2a11e89319673117a927fa inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="ac4a83e895b2a11e89319673117a927fa"></a>
virtual PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#ac4a83e895b2a11e89319673117a927fa">getInputCloud</a> () const</td></tr>
<tr class="memdesc:ac4a83e895b2a11e89319673117a927fa inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:ac4a83e895b2a11e89319673117a927fa inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ba8e4114e97c267970b79fe6cf3697e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a0ba8e4114e97c267970b79fe6cf3697e"></a>
virtual IndicesConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a0ba8e4114e97c267970b79fe6cf3697e">getIndices</a> () const</td></tr>
<tr class="memdesc:a0ba8e4114e97c267970b79fe6cf3697e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a0ba8e4114e97c267970b79fe6cf3697e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#abe2901bec8399fdd4d62a4275d89528b">nearestKSearchT</a> (const PointTDiff &amp;point, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for k-nearest neighbors for the given query point. This method accepts a different template parameter for the point type.  <a href="classpcl_1_1search_1_1_search.html#abe2901bec8399fdd4d62a4275d89528b">更多...</a><br /></td></tr>
<tr class="separator:abe2901bec8399fdd4d62a4275d89528b inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d7eedb3e5746257f121cdc675d6a21a inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a5d7eedb3e5746257f121cdc675d6a21a">nearestKSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, int index, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a5d7eedb3e5746257f121cdc675d6a21a inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for k-nearest neighbors for the given query point.  <a href="classpcl_1_1search_1_1_search.html#a5d7eedb3e5746257f121cdc675d6a21a">更多...</a><br /></td></tr>
<tr class="separator:a5d7eedb3e5746257f121cdc675d6a21a inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab79c10fe1e25b8c4a7104dd439e5f6e0 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#ab79c10fe1e25b8c4a7104dd439e5f6e0">nearestKSearch</a> (int index, int k, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:ab79c10fe1e25b8c4a7104dd439e5f6e0 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for k-nearest neighbors for the given query point (zero-copy).  <a href="classpcl_1_1search_1_1_search.html#ab79c10fe1e25b8c4a7104dd439e5f6e0">更多...</a><br /></td></tr>
<tr class="separator:ab79c10fe1e25b8c4a7104dd439e5f6e0 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7191bd8166bed4623c27199bf59e972c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a7191bd8166bed4623c27199bf59e972c">nearestKSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, const std::vector&lt; int &gt; &amp;indices, int k, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a7191bd8166bed4623c27199bf59e972c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point.  <a href="classpcl_1_1search_1_1_search.html#a7191bd8166bed4623c27199bf59e972c">更多...</a><br /></td></tr>
<tr class="separator:a7191bd8166bed4623c27199bf59e972c inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a5388aab8b46f3180b8ebe9001f1e75eb">nearestKSearchT</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointTDiff &gt; &amp;cloud, const std::vector&lt; int &gt; &amp;indices, int k, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances) const</td></tr>
<tr class="memdesc:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point. Use this method if the query points are of a different type than the points in the data set (e.g. <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html" title="A point structure representing Euclidean xyz coordinates, and the RGBA color.">PointXYZRGBA</a> instead of <a class="el" href="structpcl_1_1_point_x_y_z.html" title="A point structure representing Euclidean xyz coordinates. (SSE friendly)">PointXYZ</a>).  <a href="classpcl_1_1search_1_1_search.html#a5388aab8b46f3180b8ebe9001f1e75eb">更多...</a><br /></td></tr>
<tr class="separator:a5388aab8b46f3180b8ebe9001f1e75eb inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a817886100e51afd9d20f323eb095ca2e">radiusSearchT</a> (const PointTDiff &amp;point, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius.  <a href="classpcl_1_1search_1_1_search.html#a817886100e51afd9d20f323eb095ca2e">更多...</a><br /></td></tr>
<tr class="separator:a817886100e51afd9d20f323eb095ca2e inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d5771324782f22122f9733efeb3e63 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#ac4d5771324782f22122f9733efeb3e63">radiusSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, int index, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:ac4d5771324782f22122f9733efeb3e63 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius.  <a href="classpcl_1_1search_1_1_search.html#ac4d5771324782f22122f9733efeb3e63">更多...</a><br /></td></tr>
<tr class="separator:ac4d5771324782f22122f9733efeb3e63 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6806b0255d2921adb04275439cf4cfd6 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a6806b0255d2921adb04275439cf4cfd6">radiusSearch</a> (int index, double radius, std::vector&lt; int &gt; &amp;k_indices, std::vector&lt; float &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a6806b0255d2921adb04275439cf4cfd6 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius (zero-copy).  <a href="classpcl_1_1search_1_1_search.html#a6806b0255d2921adb04275439cf4cfd6">更多...</a><br /></td></tr>
<tr class="separator:a6806b0255d2921adb04275439cf4cfd6 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71d9c395bc2de70831e9bca8ff6b27c9 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a71d9c395bc2de70831e9bca8ff6b27c9">radiusSearch</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;cloud, const std::vector&lt; int &gt; &amp;indices, double radius, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a71d9c395bc2de70831e9bca8ff6b27c9 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius.  <a href="classpcl_1_1search_1_1_search.html#a71d9c395bc2de70831e9bca8ff6b27c9">更多...</a><br /></td></tr>
<tr class="separator:a71d9c395bc2de70831e9bca8ff6b27c9 inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplParams" colspan="2">template&lt;typename PointTDiff &gt; </td></tr>
<tr class="memitem:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_search.html#a474c6a0dd4e8fbf9c7f0840c22fb931d">radiusSearchT</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointTDiff &gt; &amp;cloud, const std::vector&lt; int &gt; &amp;indices, double radius, std::vector&lt; std::vector&lt; int &gt; &gt; &amp;k_indices, std::vector&lt; std::vector&lt; float &gt; &gt; &amp;k_sqr_distances, unsigned int max_nn=0) const</td></tr>
<tr class="memdesc:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query points in a given radius.  <a href="classpcl_1_1search_1_1_search.html#a474c6a0dd4e8fbf9c7f0840c22fb931d">更多...</a><br /></td></tr>
<tr class="separator:a474c6a0dd4e8fbf9c7f0840c22fb931d inherit pub_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a1cc587b33e0a9a4e0771d6b69b2028bf"><td class="memItemLeft" align="right" valign="top"><a id="a1cc587b33e0a9a4e0771d6b69b2028bf"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a1cc587b33e0a9a4e0771d6b69b2028bf">convertInputToFlannMatrix</a> ()</td></tr>
<tr class="memdesc:a1cc587b33e0a9a4e0771d6b69b2028bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">converts the input data to a format usable by FLANN <br /></td></tr>
<tr class="separator:a1cc587b33e0a9a4e0771d6b69b2028bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:aa15b2e10688acc27e6a87d02192a17b1 inherit pro_methods_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="aa15b2e10688acc27e6a87d02192a17b1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>sortResults</b> (std::vector&lt; int &gt; &amp;indices, std::vector&lt; float &gt; &amp;distances) const</td></tr>
<tr class="separator:aa15b2e10688acc27e6a87d02192a17b1 inherit pro_methods_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:ac8ba927f93ba7e090dd058b74858767d"><td class="memItemLeft" align="right" valign="top">IndexPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a></td></tr>
<tr class="separator:ac8ba927f93ba7e090dd058b74858767d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf804d6fa56dc663adc80ed0331a3cf2"><td class="memItemLeft" align="right" valign="top">FlannIndexCreatorPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#aaf804d6fa56dc663adc80ed0331a3cf2">creator_</a></td></tr>
<tr class="separator:aaf804d6fa56dc663adc80ed0331a3cf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d4452a1b0a591bd9a642ec9b932a0b4"><td class="memItemLeft" align="right" valign="top">MatrixPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a7d4452a1b0a591bd9a642ec9b932a0b4">input_flann_</a></td></tr>
<tr class="separator:a7d4452a1b0a591bd9a642ec9b932a0b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af64f93c1942a9d97a9fdeb0de4573a91"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a></td></tr>
<tr class="separator:af64f93c1942a9d97a9fdeb0de4573a91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5dec43cc88670e39d439a206469a74f9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a></td></tr>
<tr class="separator:a5dec43cc88670e39d439a206469a74f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4ca4239916af58e9af2182160c462e0"><td class="memItemLeft" align="right" valign="top"><a id="af4ca4239916af58e9af2182160c462e0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>input_copied_for_flann_</b></td></tr>
<tr class="separator:af4ca4239916af58e9af2182160c462e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91e8fd458b9bff590b5faa6024714e2c"><td class="memItemLeft" align="right" valign="top"><a id="a91e8fd458b9bff590b5faa6024714e2c"></a>
PointRepresentationConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>point_representation_</b></td></tr>
<tr class="separator:a91e8fd458b9bff590b5faa6024714e2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47441d42de03208f51b407c0e1cf8d92"><td class="memItemLeft" align="right" valign="top"><a id="a47441d42de03208f51b407c0e1cf8d92"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>dim_</b></td></tr>
<tr class="separator:a47441d42de03208f51b407c0e1cf8d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f48ec2a5248685ec5d49a42b6c5f779"><td class="memItemLeft" align="right" valign="top"><a id="a5f48ec2a5248685ec5d49a42b6c5f779"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>index_mapping_</b></td></tr>
<tr class="separator:a5f48ec2a5248685ec5d49a42b6c5f779"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e12dcc59f5484b8dc8baa4c47069620"><td class="memItemLeft" align="right" valign="top"><a id="a8e12dcc59f5484b8dc8baa4c47069620"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>identity_mapping_</b></td></tr>
<tr class="separator:a8e12dcc59f5484b8dc8baa4c47069620"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1search_1_1_search"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1search_1_1_search')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a3044a0a70f8f083400a41b9e34cfa4fc inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a3044a0a70f8f083400a41b9e34cfa4fc"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>input_</b></td></tr>
<tr class="separator:a3044a0a70f8f083400a41b9e34cfa4fc inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6db6521a19458ec8e5ada937bf16dcc1 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="a6db6521a19458ec8e5ada937bf16dcc1"></a>
IndicesConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>indices_</b></td></tr>
<tr class="separator:a6db6521a19458ec8e5ada937bf16dcc1 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4c8d2f983d9aeebfb592eb256d1f4d2 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="ab4c8d2f983d9aeebfb592eb256d1f4d2"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>sorted_results_</b></td></tr>
<tr class="separator:ab4c8d2f983d9aeebfb592eb256d1f4d2 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adde2b11155d871a0a835254ca1820591 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memItemLeft" align="right" valign="top"><a id="adde2b11155d871a0a835254ca1820591"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>name_</b></td></tr>
<tr class="separator:adde2b11155d871a0a835254ca1820591 inherit pro_attribs_classpcl_1_1search_1_1_search"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT, typename FlannDistance = flann::L2_Simple &lt;float&gt;&gt;<br />
class pcl::search::FlannSearch&lt; PointT, FlannDistance &gt;</h3>

<p><b><a class="el" href="classpcl_1_1search_1_1_flann_search.html" title="search::FlannSearch is a generic FLANN wrapper class for the new search interface....">search::FlannSearch</a></b> is a generic FLANN wrapper class for the new search interface. It is able to wrap any FLANN index type, e.g. the kd tree as well as indices for high-dimensional searches and intended as a more powerful and cleaner successor to KdTreeFlann. </p>
<p>By default, this class creates a single kd tree for indexing the input data. However, for high dimensions (&gt; 10), it is often better to use the multiple randomized kd tree index provided by FLANN in combination with the <a class="el" href="structflann_1_1_l2.html">flann::L2</a> distance functor. During search in this type of index, the number of checks to perform before terminating the search can be controlled. Here is a code example if a high-dimensional 2-NN search:</p>
<div class="fragment"><div class="line"><span class="comment">// Feature and distance type</span></div>
<div class="line"><span class="keyword">typedef</span> SHOT352 FeatureT;</div>
<div class="line"><span class="keyword">typedef</span> <a class="code" href="structflann_1_1_l2.html">flann::L2&lt;float&gt;</a> DistanceT;</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Search and index types</span></div>
<div class="line"><span class="keyword">typedef</span> search::FlannSearch&lt;FeatureT, DistanceT&gt; SearchT;</div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">typename</span> SearchT::FlannIndexCreatorPtr CreatorPtrT;</div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">typename</span> SearchT::KdTreeMultiIndexCreator IndexT;</div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">typename</span> SearchT::PointRepresentationPtr RepresentationPtrT;</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Features</span></div>
<div class="line"><a class="code" href="classpcl_1_1_point_cloud.html">PointCloud&lt;FeatureT&gt;::Ptr</a> query, target;</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Fill query and target with calculated features...</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">// Instantiate search object with 4 randomized trees and 256 checks</span></div>
<div class="line">SearchT search (<span class="keyword">true</span>, CreatorPtrT (<span class="keyword">new</span> IndexT (4)));</div>
<div class="line">search.setPointRepresentation (RepresentationPtrT (<span class="keyword">new</span> DefaultFeatureRepresentation&lt;FeatureT&gt;));</div>
<div class="line">search.setChecks (256);</div>
<div class="line">search.setInputCloud (target);</div>
<div class="line"> </div>
<div class="line"><span class="comment">// Do search</span></div>
<div class="line">std::vector&lt;std::vector&lt;int&gt; &gt; k_indices;</div>
<div class="line">std::vector&lt;std::vector&lt;float&gt; &gt; k_sqr_distances;</div>
<div class="line">search.nearestKSearch (*query, std::vector&lt;int&gt; (), 2, k_indices, k_sqr_distances);</div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html"><div class="ttname"><a href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a></div><div class="ttdoc">PointCloud represents the base class in PCL for storing collections of 3D points.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:173</div></div>
<div class="ttc" id="astructflann_1_1_l2_html"><div class="ttname"><a href="structflann_1_1_l2.html">flann::L2</a></div><div class="ttdef"><b>Definition:</b> flann_search.h:49</div></div>
</div><!-- fragment --><dl class="section author"><dt>作者</dt><dd>Andreas Muetzel </dd>
<dd>
Anders Glent Buch (multiple randomized kd tree interface) </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a0259b475dbe230726643f3e99885b540"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0259b475dbe230726643f3e99885b540">&#9670;&nbsp;</a></span>nearestKSearch() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::nearestKSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::vector&lt; int &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::vector&lt; float &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the point cloud data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>a vector of point cloud indices to query for nearest neighbors </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>the number of neighbors to search for </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points, k_indices[i] corresponds to the neighbors of the query point i </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points, k_sqr_distances[i] corresponds to the neighbors of the query point i </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;{</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="keywordflow">if</span> (indices.empty ())</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;  {</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    k_indices.resize (cloud.size ());</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    k_sqr_distances.resize (cloud.size ());</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    <span class="keywordflow">if</span> (! cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a3ca88d8ebf6f4f35acbc31cdfb38aa94">is_dense</a>) <span class="comment">// remove this check as soon as FLANN does NaN checks internally</span></div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    {</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; cloud.size(); i++)</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;      {</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;        assert (point_representation_-&gt;isValid (cloud[i]) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      }</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    }</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <span class="keywordtype">bool</span> can_cast = point_representation_-&gt;isTrivial ();</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160; </div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="comment">// full point cloud + trivial copy operation = no need to do any conversion/copying to the flann matrix!</span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keywordtype">float</span>* data=0;</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    <span class="keywordflow">if</span> (!can_cast)</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    {</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      data = <span class="keyword">new</span> <span class="keywordtype">float</span>[dim_*cloud.size ()];</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; cloud.size (); ++i)</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;      {</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        <span class="keywordtype">float</span>* out = data+i*dim_;</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;        point_representation_-&gt;vectorize (cloud[i],out);</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;      }</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    }</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">// const cast is evil, but the matrix constructor won&#39;t change the data, and the</span></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">// search won&#39;t change the matrix</span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordtype">float</span>* cdata = can_cast ? <span class="keyword">const_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (&amp;cloud[0])): data;</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;float&gt;</a> m (cdata ,cloud.size (), dim_, can_cast ? sizeof (<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>) : dim_ * <span class="keyword">sizeof</span> (<span class="keywordtype">float</span>) );</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160; </div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    flann::SearchParams p;</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    p.sorted = sorted_results_;</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    p.eps = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a>;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    p.checks = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a>;</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a>-&gt;knnSearch (m,k_indices,k_sqr_distances,k, p);</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160; </div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="keyword">delete</span> [] data;</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;  }</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="keywordflow">else</span> <span class="comment">// if indices are present, the cloud has to be copied anyway. Only copy the relevant parts of the points here.</span></div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  {</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    k_indices.resize (indices.size ());</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    k_sqr_distances.resize (indices.size ());</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    <span class="keywordflow">if</span> (! cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a3ca88d8ebf6f4f35acbc31cdfb38aa94">is_dense</a>) <span class="comment">// remove this check as soon as FLANN does NaN checks internally</span></div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    {</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; indices.size(); i++)</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;      {</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        assert (point_representation_-&gt;isValid (cloud [indices[i]]) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>);</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      }</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    }</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160; </div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordtype">float</span>* data=<span class="keyword">new</span> <span class="keywordtype">float</span> [dim_*indices.size ()];</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; indices.size (); ++i)</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    {</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;      <span class="keywordtype">float</span>* out = data+i*dim_;</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;      point_representation_-&gt;vectorize (cloud[indices[i]],out);</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    }</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;float&gt;</a> m (data ,indices.size (), point_representation_-&gt;getNumberOfDimensions ());</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160; </div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    flann::SearchParams p;</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    p.sorted = sorted_results_;</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    p.eps = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a>;</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    p.checks = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a>;</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a>-&gt;knnSearch (m,k_indices,k_sqr_distances,k, p);</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keyword">delete</span>[] data;</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  }</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <span class="keywordflow">if</span> (!identity_mapping_)</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;  {</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; k_indices.size (); ++j)</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    {</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; static_cast&lt;unsigned int&gt; (k); ++i)</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;      {</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="keywordtype">int</span>&amp; neighbor_index = k_indices[j][i];</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        neighbor_index = index_mapping_[neighbor_index];</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;      }</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    }</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  }</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;}</div>
<div class="ttc" id="aclassflann_1_1_matrix_html"><div class="ttname"><a href="classflann_1_1_matrix.html">flann::Matrix&lt; float &gt;</a></div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html_a3ca88d8ebf6f4f35acbc31cdfb38aa94"><div class="ttname"><a href="classpcl_1_1_point_cloud.html#a3ca88d8ebf6f4f35acbc31cdfb38aa94">pcl::PointCloud::is_dense</a></div><div class="ttdeci">bool is_dense</div><div class="ttdoc">True if no points are invalid (e.g., have NaN or Inf values).</div><div class="ttdef"><b>Definition:</b> point_cloud.h:418</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_flann_search_html_a5dec43cc88670e39d439a206469a74f9"><div class="ttname"><a href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">pcl::search::FlannSearch::checks_</a></div><div class="ttdeci">int checks_</div><div class="ttdef"><b>Definition:</b> flann_search.h:357</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_flann_search_html_ac8ba927f93ba7e090dd058b74858767d"><div class="ttname"><a href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">pcl::search::FlannSearch::index_</a></div><div class="ttdeci">IndexPtr index_</div><div class="ttdef"><b>Definition:</b> flann_search.h:341</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_flann_search_html_af64f93c1942a9d97a9fdeb0de4573a91"><div class="ttname"><a href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">pcl::search::FlannSearch::eps_</a></div><div class="ttdeci">float eps_</div><div class="ttdef"><b>Definition:</b> flann_search.h:353</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9060d79b5308f121289b0787ac44a990"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9060d79b5308f121289b0787ac44a990">&#9670;&nbsp;</a></span>nearestKSearch() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::nearestKSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>k</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>the given query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">k</td><td>the number of neighbors to search for </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points (must be resized to <em>k</em> a priori!) </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points (must be resized to <em>k</em> a priori!) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1search_1_1_search.html#a97b4eff97eaa23d4586ca9b16d1b0671">pcl::search::Search&lt; PointT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;{</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  assert (point_representation_-&gt;isValid (point) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to nearestKSearch!&quot;</span>); <span class="comment">// remove this check as soon as FLANN does NaN checks internally</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <span class="keywordtype">bool</span> can_cast = point_representation_-&gt;isTrivial ();</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <span class="keywordtype">float</span>* data = 0;</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <span class="keywordflow">if</span> (!can_cast)</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  {</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    data = <span class="keyword">new</span> <span class="keywordtype">float</span> [point_representation_-&gt;getNumberOfDimensions ()];</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    point_representation_-&gt;vectorize (point,data);</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  }</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;  <span class="keywordtype">float</span>* cdata = can_cast ? <span class="keyword">const_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (&amp;point)): data;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  <span class="keyword">const</span> <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;float&gt;</a> m (cdata ,1, point_representation_-&gt;getNumberOfDimensions ());</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  flann::SearchParams p;</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  p.eps = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a>;</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;  p.sorted = sorted_results_;</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  p.checks = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a>;</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <span class="keywordflow">if</span> (indices.size() != <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (k))</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    indices.resize (k,-1);</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">if</span> (dists.size() != <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span> (k))</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    dists.resize (k);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;int&gt;</a> i (&amp;indices[0],1,k);</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;float&gt;</a> d (&amp;dists[0],1,k);</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keywordtype">int</span> result = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a>-&gt;knnSearch (m,i,d,k, p);</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keyword">delete</span> [] data;</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="keywordflow">if</span> (!identity_mapping_)</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  {</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; static_cast&lt;unsigned int&gt; (k); ++i)</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    {</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;      <span class="keywordtype">int</span>&amp; neighbor_index = indices[i];</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      neighbor_index = index_mapping_[neighbor_index];</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;    }</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  }</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a003f3a1b8a3f24ed4ba5f4f68a8f2c14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a003f3a1b8a3f24ed4ba5f4f68a8f2c14">&#9670;&nbsp;</a></span>radiusSearch() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::radiusSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::vector&lt; int &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; std::vector&lt; float &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>max_nn</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for the k-nearest neighbors for the given query point. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the point cloud data </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>a vector of point cloud indices to query for nearest neighbors </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the sphere bounding all of p_q's neighbors </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points, k_indices[i] corresponds to the neighbors of the query point i </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points, k_sqr_distances[i] corresponds to the neighbors of the query point i </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_nn</td><td>if given, bounds the maximum returned neighbors to this value </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;{</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  <span class="keywordflow">if</span> (indices.empty ()) <span class="comment">// full point cloud + trivial copy operation = no need to do any conversion/copying to the flann matrix!</span></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  {</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    k_indices.resize (cloud.size ());</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    k_sqr_distances.resize (cloud.size ());</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <span class="keywordflow">if</span> (! cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a3ca88d8ebf6f4f35acbc31cdfb38aa94">is_dense</a>) <span class="comment">// remove this check as soon as FLANN does NaN checks internally</span></div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    {</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; cloud.size(); i++)</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      {</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        assert (point_representation_-&gt;isValid (cloud[i]) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to radiusSearch!&quot;</span>);</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;      }</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    }</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160; </div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    <span class="keywordtype">bool</span> can_cast = point_representation_-&gt;isTrivial ();</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160; </div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="keywordtype">float</span>* data = 0;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    <span class="keywordflow">if</span> (!can_cast)</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    {</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      data = <span class="keyword">new</span> <span class="keywordtype">float</span>[dim_*cloud.size ()];</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; cloud.size (); ++i)</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      {</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        <span class="keywordtype">float</span>* out = data+i*dim_;</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        point_representation_-&gt;vectorize (cloud[i],out);</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;      }</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    }</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    <span class="keywordtype">float</span>* cdata = can_cast ? <span class="keyword">const_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (&amp;cloud[0])) : data;</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;float&gt;</a> m (cdata ,cloud.size (), dim_, can_cast ? sizeof (<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>) : dim_ * <span class="keyword">sizeof</span> (<span class="keywordtype">float</span>));</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160; </div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    flann::SearchParams p;</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    p.sorted = sorted_results_;</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    p.eps = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a>;</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    p.checks = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a>;</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="comment">// here: max_nn==0: take all neighbors. flann: max_nn==0: return no neighbors, only count them. max_nn==-1: return all neighbors</span></div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    p.max_neighbors = max_nn != 0 ? max_nn : -1;</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a>-&gt;radiusSearch (m,k_indices,k_sqr_distances,<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (radius * radius), p);</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160; </div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <span class="keyword">delete</span> [] data;</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  }</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;  <span class="keywordflow">else</span> <span class="comment">// if indices are present, the cloud has to be copied anyway. Only copy the relevant parts of the points here.</span></div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;  {</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    k_indices.resize (indices.size ());</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    k_sqr_distances.resize (indices.size ());</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160; </div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <span class="keywordflow">if</span> (! cloud.<a class="code" href="classpcl_1_1_point_cloud.html#a3ca88d8ebf6f4f35acbc31cdfb38aa94">is_dense</a>)  <span class="comment">// remove this check as soon as FLANN does NaN checks internally</span></div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;    {</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; indices.size(); i++)</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;      {</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        assert (point_representation_-&gt;isValid (cloud [indices[i]]) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to radiusSearch!&quot;</span>);</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;      }</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;    }</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160; </div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    <span class="keywordtype">float</span>* data = <span class="keyword">new</span> <span class="keywordtype">float</span> [dim_ * indices.size ()];</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; indices.size (); ++i)</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    {</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;      <span class="keywordtype">float</span>* out = data+i*dim_;</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;      point_representation_-&gt;vectorize (cloud[indices[i]], out);</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    }</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keyword">const</span> <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;float&gt;</a> m (data, cloud.size (), point_representation_-&gt;getNumberOfDimensions ());</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    flann::SearchParams p;</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    p.sorted = sorted_results_;</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    p.eps = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a>;</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    p.checks = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a>;</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="comment">// here: max_nn==0: take all neighbors. flann: max_nn==0: return no neighbors, only count them. max_nn==-1: return all neighbors</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    p.max_neighbors = max_nn != 0 ? max_nn : -1;</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a>-&gt;radiusSearch (m, k_indices, k_sqr_distances, <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (radius * radius), p);</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160; </div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <span class="keyword">delete</span>[] data;</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;  }</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  <span class="keywordflow">if</span> (!identity_mapping_)</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  {</div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; k_indices.size (); ++j )</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    {</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; k_indices[j].size (); ++i)</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;      {</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        <span class="keywordtype">int</span>&amp; neighbor_index = k_indices[j][i];</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        neighbor_index = index_mapping_[neighbor_index];</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;      }</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    }</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  }</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a376242567b2cd559d4828715ea600d08"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a376242567b2cd559d4828715ea600d08">&#9670;&nbsp;</a></span>radiusSearch() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::radiusSearch </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_indices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>k_sqr_distances</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>max_nn</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="classpcl_1_1search_1_1_search.html" title="Generic search class. All search wrappers must inherit from this.">Search</a> for all the nearest neighbors of the query point in a given radius. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>the given query point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>the radius of the sphere bounding all of p_q's neighbors </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_indices</td><td>the resultant indices of the neighboring points </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">k_sqr_distances</td><td>the resultant squared distances to the neighboring points </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_nn</td><td>if given, bounds the maximum returned neighbors to this value. If <em>max_nn</em> is set to 0 or to a number higher than the number of points in the input cloud, all neighbors in <em>radius</em> will be returned. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>number of neighbors found in radius </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1search_1_1_search.html#a441f41e648d284d68e1f2015d40f5e7c">pcl::search::Search&lt; PointT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;{</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;  assert (point_representation_-&gt;isValid (point) &amp;&amp; <span class="stringliteral">&quot;Invalid (NaN, Inf) point coordinates given to radiusSearch!&quot;</span>); <span class="comment">// remove this check as soon as FLANN does NaN checks internally</span></div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  <span class="keywordtype">bool</span> can_cast = point_representation_-&gt;isTrivial ();</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160; </div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <span class="keywordtype">float</span>* data = 0;</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <span class="keywordflow">if</span> (!can_cast)</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  {</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    data = <span class="keyword">new</span> <span class="keywordtype">float</span> [point_representation_-&gt;getNumberOfDimensions ()];</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    point_representation_-&gt;vectorize (point,data);</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  }</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160; </div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="keywordtype">float</span>* cdata = can_cast ? <span class="keyword">const_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (&amp;point)) : data;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <span class="keyword">const</span> <a class="code" href="classflann_1_1_matrix.html">flann::Matrix&lt;float&gt;</a> m (cdata ,1, point_representation_-&gt;getNumberOfDimensions ());</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  flann::SearchParams p;</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;  p.sorted = sorted_results_;</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  p.eps = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a>;</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;  p.max_neighbors = max_nn &gt; 0 ? max_nn : -1;</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  p.checks = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a>;</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  std::vector&lt;std::vector&lt;int&gt; &gt; i (1);</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  std::vector&lt;std::vector&lt;float&gt; &gt; d (1);</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="keywordtype">int</span> result = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a>-&gt;radiusSearch (m,i,d,<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (radius * radius), p);</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="keyword">delete</span> [] data;</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;  indices = i [0];</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;  distances = d [0];</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160; </div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;  <span class="keywordflow">if</span> (!identity_mapping_)</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  {</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; indices.size (); ++i)</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    {</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;      <span class="keywordtype">int</span>&amp; neighbor_index = indices [i];</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;      neighbor_index = index_mapping_ [neighbor_index];</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    }</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  }</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a7acb950fe0924c9625507336a5e803a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7acb950fe0924c9625507336a5e803a9">&#9670;&nbsp;</a></span>setChecks()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::setChecks </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>checks</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the number of checks to perform during approximate searches in multiple randomized trees. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">checks</td><td>number of checks to perform during approximate searches in multiple randomized trees. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        {</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;          <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a5dec43cc88670e39d439a206469a74f9">checks_</a> = checks;</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a18af4bfbf20e87b3ffadda8f7a80658d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18af4bfbf20e87b3ffadda8f7a80658d">&#9670;&nbsp;</a></span>setEpsilon()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::setEpsilon </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>eps</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the search epsilon precision (error bound) for nearest neighbors searches. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">eps</td><td>precision (error bound) for nearest neighbors searches </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;        {</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;          <a class="code" href="classpcl_1_1search_1_1_flann_search.html#af64f93c1942a9d97a9fdeb0de4573a91">eps_</a> = eps;</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ace2468a9ef6db97f6b8d3c76d5ae9366"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace2468a9ef6db97f6b8d3c76d5ae9366">&#9670;&nbsp;</a></span>setInputCloud()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::setInputCloud </td>
          <td>(</td>
          <td class="paramtype">const PointCloudConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const IndicesConstPtr &amp;&#160;</td>
          <td class="paramname"><em>indices</em> = <code>IndicesConstPtr&#160;()</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the input dataset. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud</td><td>the const boost shared pointer to a <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> message </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>the point indices subset that is to be used from <em>cloud</em> </td></tr>
  </table>
  </dd>
</dl>

<p>重载 <a class="el" href="classpcl_1_1search_1_1_search.html#a3f7aa9ba73d098c204bc8a6b9dd293dc">pcl::search::Search&lt; PointT &gt;</a> .</p>
<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;{</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  input_ = cloud;</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  indices_ = indices;</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <a class="code" href="classpcl_1_1search_1_1_flann_search.html#a1cc587b33e0a9a4e0771d6b69b2028bf">convertInputToFlannMatrix</a> ();</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a> = <a class="code" href="classpcl_1_1search_1_1_flann_search.html#aaf804d6fa56dc663adc80ed0331a3cf2">creator_</a>-&gt;createIndex (<a class="code" href="classpcl_1_1search_1_1_flann_search.html#a7d4452a1b0a591bd9a642ec9b932a0b4">input_flann_</a>);</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ac8ba927f93ba7e090dd058b74858767d">index_</a>-&gt;buildIndex ();</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1search_1_1_flann_search_html_a1cc587b33e0a9a4e0771d6b69b2028bf"><div class="ttname"><a href="classpcl_1_1search_1_1_flann_search.html#a1cc587b33e0a9a4e0771d6b69b2028bf">pcl::search::FlannSearch::convertInputToFlannMatrix</a></div><div class="ttdeci">void convertInputToFlannMatrix()</div><div class="ttdoc">converts the input data to a format usable by FLANN</div><div class="ttdef"><b>Definition:</b> flann_search.hpp:362</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_flann_search_html_a7d4452a1b0a591bd9a642ec9b932a0b4"><div class="ttname"><a href="classpcl_1_1search_1_1_flann_search.html#a7d4452a1b0a591bd9a642ec9b932a0b4">pcl::search::FlannSearch::input_flann_</a></div><div class="ttdeci">MatrixPtr input_flann_</div><div class="ttdef"><b>Definition:</b> flann_search.h:349</div></div>
<div class="ttc" id="aclasspcl_1_1search_1_1_flann_search_html_aaf804d6fa56dc663adc80ed0331a3cf2"><div class="ttname"><a href="classpcl_1_1search_1_1_flann_search.html#aaf804d6fa56dc663adc80ed0331a3cf2">pcl::search::FlannSearch::creator_</a></div><div class="ttdeci">FlannIndexCreatorPtr creator_</div><div class="ttdef"><b>Definition:</b> flann_search.h:345</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae70a35ca569955432de38d278a27fd1c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae70a35ca569955432de38d278a27fd1c">&#9670;&nbsp;</a></span>setPointRepresentation()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::setPointRepresentation </td>
          <td>(</td>
          <td class="paramtype">const PointRepresentationConstPtr &amp;&#160;</td>
          <td class="paramname"><em>point_representation</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provide a pointer to the point representation to use to convert points into k-D vectors. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">point_representation</td><td>the const boost shared pointer to a <a class="el" href="classpcl_1_1_point_representation.html" title="PointRepresentation provides a set of methods for converting a point structs/object into an n-dimensi...">PointRepresentation</a> </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        {</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;          point_representation_ = point_representation;</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;          dim_ = point_representation-&gt;getNumberOfDimensions ();</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;          <span class="keywordflow">if</span> (input_) <span class="comment">// re-create the tree, since point_represenation might change things such as the scaling of the point clouds.</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;            <a class="code" href="classpcl_1_1search_1_1_flann_search.html#ace2468a9ef6db97f6b8d3c76d5ae9366">setInputCloud</a> (input_, indices_);</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1search_1_1_flann_search_html_ace2468a9ef6db97f6b8d3c76d5ae9366"><div class="ttname"><a href="classpcl_1_1search_1_1_flann_search.html#ace2468a9ef6db97f6b8d3c76d5ae9366">pcl::search::FlannSearch::setInputCloud</a></div><div class="ttdeci">virtual void setInputCloud(const PointCloudConstPtr &amp;cloud, const IndicesConstPtr &amp;indices=IndicesConstPtr())</div><div class="ttdoc">Provide a pointer to the input dataset.</div><div class="ttdef"><b>Definition:</b> flann_search.hpp:89</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">类成员变量说明</h2>
<a id="a5dec43cc88670e39d439a206469a74f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5dec43cc88670e39d439a206469a74f9">&#9670;&nbsp;</a></span>checks_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::checks_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Number of checks to perform for approximate NN search using the multiple randomized tree index </p>

</div>
</div>
<a id="aaf804d6fa56dc663adc80ed0331a3cf2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf804d6fa56dc663adc80ed0331a3cf2">&#9670;&nbsp;</a></span>creator_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">FlannIndexCreatorPtr <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::creator_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The index creator, used to (re-) create the index when the search data is passed. </p>

</div>
</div>
<a id="af64f93c1942a9d97a9fdeb0de4573a91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af64f93c1942a9d97a9fdeb0de4573a91">&#9670;&nbsp;</a></span>eps_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::eps_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Epsilon for approximate NN search. </p>

</div>
</div>
<a id="ac8ba927f93ba7e090dd058b74858767d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8ba927f93ba7e090dd058b74858767d">&#9670;&nbsp;</a></span>index_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">IndexPtr <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::index_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The FLANN index. </p>

</div>
</div>
<a id="a7d4452a1b0a591bd9a642ec9b932a0b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d4452a1b0a591bd9a642ec9b932a0b4">&#9670;&nbsp;</a></span>input_flann_</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename FlannDistance  = flann::L2_Simple &lt;float&gt;&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">MatrixPtr <a class="el" href="classpcl_1_1search_1_1_flann_search.html">pcl::search::FlannSearch</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, FlannDistance &gt;::input_flann_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Input data in FLANN format. </p>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>search/include/pcl/search/<a class="el" href="flann__search_8h_source.html">flann_search.h</a></li>
<li>search/include/pcl/search/impl/<a class="el" href="flann__search_8hpp_source.html">flann_search.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>search</b></li><li class="navelem"><a class="el" href="classpcl_1_1search_1_1_flann_search.html">FlannSearch</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
